﻿using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using SQLite;
using SQLitePCL;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Xamarin.Forms;
using Xamarin.Forms.Xaml;
using Xamarin.Forms.Shapes;
using Xamarin.Essentials;

namespace KursachApp
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class AuthPage : ContentPage
    {
         FriendAsyncRepository database;
        public AuthPage()
        {
            InitializeComponent();
            string dbPath = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "kursachBD3.db");
            database = new FriendAsyncRepository(dbPath);
            //database = new FriendAsyncRepository(System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "kursachBD.db"));
        }
        protected override async void OnAppearing()
        {
            // создание таблицы, если ее нет
            await App.Database.CreateTable();
            

            base.OnAppearing();
        }
        private async void AutorizationB_Clicked(object sender, EventArgs e)
        {
            string username = LoginE.Text;
            string password = PassE.Text;
            
            //bool isAuthenticated = await database.CheckCredentialsAsync(username, password);



            // код для другой авторизации
            var repository = new FriendAsyncRepository(System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "kursachBD3.db"));
            var connection = repository.GetDatabaseConnection();
            
            //конец

            //if (isAuthenticated == true)
            //{
            //    await DisplayAlert("Успех", "Авторизация удалась", "OK");
            //    //await Navigation.PushAsync(new MainPage());
            //    await Navigation.PushAsync(new NotesPage());
            //}
            //else
            //{
            //    await DisplayAlert("Ошибка", "Неверное имя пользователя или пароль", "OK");
            //}


            try
            {
                var user = await connection.Table<Users>().Where(u => u.Login == username && u.Password == password).FirstOrDefaultAsync();

                switch (user.Role)
                {
                    case "admin":
                        await DisplayAlert("Вход админа", "Авторизация удалась", "OK");
                        //int mainID = user.Id;
                        //string user = obj.UserSurname + obj.UserName;
                        await Navigation.PushAsync(new NotesForAdminPage());
                        break;

                    case "user":
                        await DisplayAlert("Успех", "Авторизация удалась", "OK");
                        int userid = user.Id;
                        //string user2 = obj.UserSurname + obj.UserName;
                        await Navigation.PushAsync(new NotesPage(userid));

                        break;
                    //case 3:
                    //    await DisplayAlert("Успех", "Авторизация удалась", "OK");
                    //    //string user3 = obj.UserSurname + obj.UserName;
                    //    await Navigation.PushAsync(new NotesPage());

                    //    break;

                    default:
                        //    //await Navigation.PushAsync(new NotesPage()); 
                            await DisplayAlert("Ошибка", "netak", "OK"); break;
                        //await Navigation.PushAsync(new NotesPage(userid));


                }
            }
            catch (Exception) { await DisplayAlert("Ошибка", "Неверное имя пользователя или пароль", "OK"); }
        }
    }
}